package com.zrwl.poscloud.xo.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zrwl.poscloud.base.entity.UserAdminR;
import com.zrwl.poscloud.base.enums.EStatus;
import com.zrwl.poscloud.base.superI.SuperServiceImpl;
import com.zrwl.poscloud.commons.utils.ResultUtil;
import com.zrwl.poscloud.xo.global.MessageConf;
import com.zrwl.poscloud.xo.global.SQLConf;
import com.zrwl.poscloud.xo.global.SysConf;
import com.zrwl.poscloud.xo.mapper.UserAdminRMapper;
import com.zrwl.poscloud.xo.service.UserAdminRService;
import com.zrwl.poscloud.xo.vo.UserAdminRVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 用户管理员关联表 服务实现类
 *
 * @author 刘思童 AutoGenerate
 * @date 2021-06-01
 */
@Service
public class UserAdminRServiceImpl extends SuperServiceImpl<UserAdminRMapper, UserAdminR> implements UserAdminRService {

    @Autowired
    private UserAdminRService userAdminRService;
    @Resource
    private UserAdminRMapper userAdminRMapper;

    @Override
    public IPage<UserAdminRVO> getPageList(UserAdminRVO userAdminRVO) {
        if ("".equals(userAdminRVO.getKeyword())) {
            userAdminRVO.setKeyword(null);
        }
        Page<UserAdminRVO> page = new Page<>();
        page.setCurrent(userAdminRVO.getCurrentPage());
        page.setSize(userAdminRVO.getPageSize());
        IPage<UserAdminRVO> pageList = userAdminRMapper.getUserAdminRList(page, userAdminRVO);
        List<UserAdminRVO> list = pageList.getRecords();
        pageList.setRecords(list);
        return pageList;
    }

    @Override
    public List<UserAdminR> getAllList(UserAdminRVO userAdminRVO) {
        QueryWrapper<UserAdminR> queryWrapper = new QueryWrapper<>();
        queryWrapper.ne(SQLConf.STATUS, EStatus.DISABLED);
        queryWrapper.orderByAsc(SQLConf.CREATE_TIME);
        List<UserAdminR> list = userAdminRService.list(queryWrapper);
        return list;
    }

    @Override
    public String add(UserAdminRVO userAdminRVO) {
        QueryWrapper<UserAdminR> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_uid", userAdminRVO.getUserUid());
        queryWrapper.eq("admin_uid", userAdminRVO.getAdminUid());
        queryWrapper.ne(SQLConf.STATUS, EStatus.DISABLED);
        if (userAdminRService.count(queryWrapper) > 0) {
            return ResultUtil.successWithMessage("重复绑定");
        }
        userAdminRMapper.updateUser(userAdminRVO.getUserUid());
        UserAdminR entity = new UserAdminR();
        BeanUtils.copyProperties(userAdminRVO, entity, SysConf.STATUS);
        entity.insert();
        userAdminRVO.setUid(entity.getUid());
        return ResultUtil.successWithMessage(MessageConf.INSERT_SUCCESS);
    }

    @Override
    public String edit(UserAdminRVO userAdminRVO) {
        UserAdminR entity = userAdminRService.getById(userAdminRVO.getUid());
        if (userAdminRVO.getStatus() == 1) {
            userAdminRMapper.updateUser(entity.getUserUid());
        }
        BeanUtils.copyProperties(userAdminRVO, entity);
        //entity.setUpdateTime//已通过填充实现，后续可删除(new Date());
        entity.updateById();
        return ResultUtil.successWithMessage(MessageConf.UPDATE_SUCCESS);
    }

    @Override
    public String delete(UserAdminRVO userAdminRVO) {
        UserAdminR entity = userAdminRService.getById(userAdminRVO.getUid());
        entity.setStatus(EStatus.DISABLED);
        //entity.setUpdateTime//已通过填充实现，后续可删除(new Date());
        entity.updateById();
        return ResultUtil.successWithMessage(MessageConf.UPDATE_SUCCESS);
    }
}
